package com.atguigu.mr2;

import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapper;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
//如果想要本地运行，写一个hbase-site.xml文件
//mapper为了切分，Reducer是为了合并
//随便写，传入参数写LongWriterable和text也可以，但是为了防止数据倾斜，将一部分工作放到mapper中去
public class Fruit2Mapper extends TableMapper<ImmutableBytesWritable, Put> {
    @Override
    protected void map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException {
        System.out.println("执行到了");
        Put put = new Put(key.get());
        //1 获取数据
        for (Cell cell:value.rawCells()) {
            //2 判断当前cell是否为“name列
            if("name".equals(Bytes.toString(CellUtil.cloneQualifier(cell)))){
                System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
                //3 给put对象赋值,此时采用了取巧的方式，如果感觉没有见过，那么还可以直接使用addColumn
                put.add(cell);
            }
        }
        //4 写出数据
        context.write(key,put);
    }
}
